| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | 
							- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- namespace SharpCifs.Util.Sharpen
 
- {
 
-     public abstract class AbstractMap<T, TU> : IDictionary<T, TU>
 
- 	{
 
- 	    public virtual void Clear ()
 
- 		{
 
- 			EntrySet ().Clear ();
 
- 		}
 
- 		public virtual bool ContainsKey (object name)
 
- 		{
 
- 			return EntrySet ().Any (p => p.Key.Equals ((T)name));
 
- 		}
 
- 		public abstract ICollection<KeyValuePair<T, TU>> EntrySet ();
 
- 		public virtual TU Get (object key)
 
- 		{
 
- 			return EntrySet ().Where (p => p.Key.Equals (key)).Select (p => p.Value).FirstOrDefault ();
 
- 		}
 
- 		protected virtual IEnumerator<KeyValuePair<T, TU>> InternalGetEnumerator ()
 
- 		{
 
- 			return EntrySet ().GetEnumerator ();
 
- 		}
 
- 		public virtual bool IsEmpty ()
 
- 		{
 
- 			return !EntrySet ().Any ();
 
- 		}
 
- 		public virtual TU Put (T key, TU value)
 
- 		{
 
- 			throw new NotSupportedException ();
 
- 		}
 
- 		public virtual TU Remove (object key)
 
- 		{
 
- 			Iterator<TU> iterator = EntrySet () as Iterator<TU>;
 
- 			if (iterator == null) {
 
- 				throw new NotSupportedException ();
 
- 			}
 
- 			while (iterator.HasNext ()) {
 
- 				TU local = iterator.Next ();
 
- 				if (local.Equals ((T)key)) {
 
- 					iterator.Remove ();
 
- 					return local;
 
- 				}
 
- 			}
 
- 			return default(TU);
 
- 		}
 
- 		void ICollection<KeyValuePair<T, TU>>.Add (KeyValuePair<T, TU> item)
 
- 		{
 
- 			Put (item.Key, item.Value);
 
- 		}
 
- 		bool ICollection<KeyValuePair<T, TU>>.Contains (KeyValuePair<T, TU> item)
 
- 		{
 
- 			throw new NotImplementedException ();
 
- 		}
 
- 		void ICollection<KeyValuePair<T, TU>>.CopyTo (KeyValuePair<T, TU>[] array, int arrayIndex)
 
- 		{
 
- 			EntrySet ().CopyTo (array, arrayIndex);
 
- 		}
 
- 		bool ICollection<KeyValuePair<T, TU>>.Remove (KeyValuePair<T, TU> item)
 
- 		{
 
- 			Remove (item.Key);
 
- 			return true;
 
- 		}
 
- 		void IDictionary<T, TU>.Add (T key, TU value)
 
- 		{
 
- 			Put (key, value);
 
- 		}
 
- 		bool IDictionary<T, TU>.ContainsKey (T key)
 
- 		{
 
- 			return ContainsKey (key);
 
- 		}
 
- 		bool IDictionary<T, TU>.Remove (T key)
 
- 		{
 
- 			if (ContainsKey (key)) {
 
- 				Remove (key);
 
- 				return true;
 
- 			}
 
- 			return false;
 
- 		}
 
- 		bool IDictionary<T, TU>.TryGetValue (T key, out TU value)
 
- 		{
 
- 			if (ContainsKey (key)) {
 
- 				value = Get (key);
 
- 				return true;
 
- 			}
 
- 			value = default(TU);
 
- 			return false;
 
- 		}
 
- 		IEnumerator<KeyValuePair<T, TU>> IEnumerable<KeyValuePair<T, TU>>.GetEnumerator ()
 
- 		{
 
- 			return InternalGetEnumerator ();
 
- 		}
 
- 		IEnumerator IEnumerable.GetEnumerator ()
 
- 		{
 
- 			return InternalGetEnumerator ();
 
- 		}
 
- 		public virtual int Count {
 
- 			get { return EntrySet ().Count; }
 
- 		}
 
- 		public TU this[T key] {
 
- 			get { return Get (key); }
 
- 			set { Put (key, value); }
 
- 		}
 
- 		public virtual IEnumerable<T> Keys {
 
- 			get { return EntrySet ().Select (p => p.Key); }
 
- 		}
 
- 		int ICollection<KeyValuePair<T, TU>>.Count {
 
- 			get { return Count; }
 
- 		}
 
- 		bool ICollection<KeyValuePair<T, TU>>.IsReadOnly {
 
- 			get { return false; }
 
- 		}
 
- 		ICollection<T> IDictionary<T, TU>.Keys {
 
- 			get { return Keys.ToList (); }
 
- 		}
 
- 		ICollection<TU> IDictionary<T, TU>.Values {
 
- 			get { return Values.ToList (); }
 
- 		}
 
- 		public virtual IEnumerable<TU> Values {
 
- 			get { return EntrySet ().Select (p => p.Value); }
 
- 		}
 
- 	}
 
- }
 
 
  |