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); }
- }
- }
- }
|