123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- using System.Collections;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- namespace SharpCifs.Util.Sharpen
- {
- internal static class Collections<T>
- {
- static readonly IList<T> Empty = new T[0];
- public static IList<T> EmptySet
- {
- get { return Empty; }
- }
- }
- public static class Collections
- {
- public static bool AddAll<T>(ICollection<T> list, IEnumerable toAdd)
- {
- foreach (T t in toAdd)
- list.Add(t);
- return true;
- }
- public static TV Remove<TK, TV>(IDictionary<TK, TV> map, TK toRemove) where TK : class
- {
- TV local;
- if (map.TryGetValue(toRemove, out local))
- {
- map.Remove(toRemove);
- return local;
- }
- return default(TV);
- }
- public static T[] ToArray<T>(ICollection<T> list)
- {
- T[] array = new T[list.Count];
- list.CopyTo(array, 0);
- return array;
- }
- public static T[] ToArray<T>(List<object> list)
- {
- T[] array = new T[list.Count];
- for (int c = 0; c < list.Count; c++)
- {
- array[c] = (T)list[c];
- }
- return array;
- }
- public static TU[] ToArray<T, TU>(ICollection<T> list, TU[] res) where T : TU
- {
- if (res.Length < list.Count)
- res = new TU[list.Count];
- int n = 0;
- foreach (T t in list)
- res[n++] = t;
- if (res.Length > list.Count)
- res[list.Count] = default(T);
- return res;
- }
- public static IDictionary<TK, TV> EmptyMap<TK, TV>()
- {
- return new Dictionary<TK, TV>();
- }
- public static IList<T> EmptyList<T>()
- {
- return Collections<T>.EmptySet;
- }
- public static ICollection<T> EmptySet<T>()
- {
- return Collections<T>.EmptySet;
- }
- public static IList<T> NCopies<T>(int n, T elem)
- {
- List<T> list = new List<T>(n);
- while (n-- > 0)
- {
- list.Add(elem);
- }
- return list;
- }
- public static void Reverse<T>(IList<T> list)
- {
- int end = list.Count - 1;
- int index = 0;
- while (index < end)
- {
- T tmp = list[index];
- list[index] = list[end];
- list[end] = tmp;
- ++index;
- --end;
- }
- }
- public static ICollection<T> Singleton<T>(T item)
- {
- List<T> list = new List<T>(1);
- list.Add(item);
- return list;
- }
- public static IList<T> SingletonList<T>(T item)
- {
- List<T> list = new List<T>(1);
- list.Add(item);
- return list;
- }
- public static IList<T> SynchronizedList<T>(IList<T> list)
- {
- return new SynchronizedList<T>(list);
- }
- public static ICollection<T> UnmodifiableCollection<T>(ICollection<T> list)
- {
- return list;
- }
- public static IList<T> UnmodifiableList<T>(IList<T> list)
- {
- return new ReadOnlyCollection<T>(list);
- }
- public static ICollection<T> UnmodifiableSet<T>(ICollection<T> list)
- {
- return list;
- }
- public static IDictionary<TK, TV> UnmodifiableMap<TK, TV>(IDictionary<TK, TV> dict)
- {
- return dict;
- }
- }
- }
|