mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-04 03:27:21 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Collections.ObjectModel;
 | 
						|
 | 
						|
// TODO: @bond Remove
 | 
						|
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;
 | 
						|
		}
 | 
						|
 | 
						|
    }
 | 
						|
}
 |